package com.example.springboot.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.example.springboot.dto.DestinationDTO;
import com.example.springboot.entity.Destination;

import java.util.List;

public interface DestinationService extends IService<Destination> {

    /**
     * 获取目的地详情
     * @param id 目的地ID
     * @return 目的地详情DTO
     */
    DestinationDTO getDestinationDetail(Long id);

    /**
     * 获取热门目的地
     * @return 热门目的地列表
     */
    List<DestinationDTO> getHotDestinations();

    /**
     * 根据区域获取目的地
     * @param region 区域
     * @return 目的地列表
     */
    List<DestinationDTO> getDestinationsByRegion(String region);

    /**
     * 根据类型获取目的地
     * @param type 类型
     * @return 目的地列表
     */
    List<DestinationDTO> getDestinationsByType(String type);

    /**
     * 分页查询目的地
     * @param page 页码
     * @param size 每页大小
     * @param keyword 关键词
     * @param region 区域
     * @param type 类型
     * @param orderBy 排序方式
     * @return 分页结果
     */
    IPage<DestinationDTO> pageDestinations(Integer page, Integer size, String keyword, String region, String type, String orderBy);

    /**
     * 增加目的地访问量
     * @param id 目的地ID
     */
    void incrementVisits(Long id);
    
    /**
     * 获取所有活跃的目的地
     * @return 目的地列表
     */
    List<Destination> getActiveDestinations();
}